home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 July: Mac OS SDK / Dev.CD Jul 00 SDK2.toast / Development Kits / Cross Platform / QuickTime 4.1.2 Windows SDK / CIncludes / QD3DWinViewer.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-04-12  |  15.3 KB  |  506 lines  |  [TEXT/R*ch]

  1. /*
  2.      File:        QD3DWinViewer.h
  3.  
  4.      Contains:    Win32 Viewer Controller Interface File.                                
  5.  
  6.      Version:    Technology:    Quickdraw 3D 1.6
  7.                  Release:    QuickTime 4.1
  8.  
  9.      Copyright:    (c) 1995-1999 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __QD3DWINVIEWER__
  18. #define __QD3DWINVIEWER__
  19.  
  20. #ifndef __QD3D__
  21.     #include <QD3D.h>
  22. #endif
  23.  
  24. #ifndef __QD3DGROUP__
  25.     #include <QD3DGroup.h>
  26. #endif
  27.  
  28.  
  29.  
  30. #if TARGET_OS_WIN32
  31. #include <windows.h>
  32. #endif
  33.  
  34.  
  35.  
  36. #if PRAGMA_ONCE
  37. #pragma once
  38. #endif
  39.  
  40. #ifdef __cplusplus
  41. extern "C" {
  42. #endif
  43.  
  44. #if PRAGMA_IMPORT
  45. #pragma import on
  46. #endif
  47.  
  48. #if PRAGMA_STRUCT_ALIGN
  49.     #pragma options align=power
  50. #elif PRAGMA_STRUCT_PACKPUSH
  51.     #pragma pack(push, 2)
  52. #elif PRAGMA_STRUCT_PACK
  53.     #pragma pack(2)
  54. #endif
  55.  
  56. #if PRAGMA_ENUM_ALWAYSINT
  57.     #pragma enumsalwaysint on
  58. #elif PRAGMA_ENUM_OPTIONS
  59.     #pragma option enum=int
  60. #elif PRAGMA_ENUM_PACK
  61.     #if __option(pack_enums)
  62.         #define PRAGMA_ENUM_PACK__QD3DWINVIEWER__
  63.     #endif
  64.     #pragma options(!pack_enums)
  65. #endif
  66.  
  67. #if TARGET_OS_WIN32
  68. typedef void *                            TQ3ViewerObject;
  69. typedef CALLBACK_API_C( TQ3Status , TQ3ViewerDrawingCallbackMethod )(TQ3ViewerObject theViewer, const void *data);
  70. typedef CALLBACK_API_C( TQ3Status , TQ3ViewerWindowResizeCallbackMethod )(TQ3ViewerObject theViewer, const void *data);
  71. typedef CALLBACK_API_C( TQ3Status , TQ3ViewerPaneResizeNotifyCallbackMethod )(TQ3ViewerObject theViewer, const void *data);
  72. enum {
  73.     kQ3ViewerShowBadge            = 1 << 0,
  74.     kQ3ViewerActive                = 1 << 1,
  75.     kQ3ViewerControllerVisible    = 1 << 2,
  76.     kQ3ViewerButtonCamera        = 1 << 3,
  77.     kQ3ViewerButtonTruck        = 1 << 4,
  78.     kQ3ViewerButtonOrbit        = 1 << 5,
  79.     kQ3ViewerButtonZoom            = 1 << 6,
  80.     kQ3ViewerButtonDolly        = 1 << 7,
  81.     kQ3ViewerButtonReset        = 1 << 8,
  82.     kQ3ViewerButtonNone            = 1 << 9,
  83.     kQ3ViewerOutputTextMode        = 1 << 10,
  84.     kQ3ViewerDraggingInOff        = 1 << 11,
  85.     kQ3ViewerButtonOptions        = 1 << 12,
  86.     kQ3ViewerPaneGrowBox        = 1 << 13,
  87.     kQ3ViewerDefault            = 1 << 15
  88. };
  89.  
  90.  
  91. enum {
  92.     kQ3ViewerEmpty                = 0,
  93.     kQ3ViewerHasModel            = 1 << 0,
  94.     kQ3ViewerHasUndo            = 1 << 1
  95. };
  96.  
  97.  
  98. enum TQ3ViewerCameraView {
  99.     kQ3ViewerCameraRestore        = 0,
  100.     kQ3ViewerCameraFit            = 1,
  101.     kQ3ViewerCameraFront        = 2,
  102.     kQ3ViewerCameraBack            = 3,
  103.     kQ3ViewerCameraLeft            = 4,
  104.     kQ3ViewerCameraRight        = 5,
  105.     kQ3ViewerCameraTop            = 6,
  106.     kQ3ViewerCameraBottom        = 7
  107. };
  108. typedef enum TQ3ViewerCameraView TQ3ViewerCameraView;
  109.  
  110.  
  111. /******************************************************************************
  112.  **                                                                             **
  113.  **                                WM_NOTIFY structures                           **
  114.  **                                                                             **
  115.  *****************************************************************************/
  116.  
  117. struct TQ3ViewerDropFiles {
  118.     NMHDR                             nmhdr;
  119.     HANDLE                             hDrop;
  120. };
  121. typedef struct TQ3ViewerDropFiles        TQ3ViewerDropFiles;
  122.  
  123. struct TQ3ViewerSetView {
  124.     NMHDR                             nmhdr;
  125.     TQ3ViewerCameraView             view;
  126. };
  127. typedef struct TQ3ViewerSetView            TQ3ViewerSetView;
  128.  
  129. struct TQ3ViewerSetViewNumber {
  130.     NMHDR                             nmhdr;
  131.     unsigned long                     number;
  132. };
  133. typedef struct TQ3ViewerSetViewNumber    TQ3ViewerSetViewNumber;
  134.  
  135. struct TQ3ViewerButtonSet {
  136.     NMHDR                             nmhdr;
  137.     unsigned long                     button;
  138. };
  139. typedef struct TQ3ViewerButtonSet        TQ3ViewerButtonSet;
  140. /******************************************************************************
  141.  **                                                                             **
  142.  **                                WM_NOTIFY defines                               **
  143.  **                                                                             **
  144.  *****************************************************************************/
  145.  
  146. #define Q3VNM_DROPFILES        0x5000
  147. #define Q3VNM_CANUNDO        0x5001
  148. #define Q3VNM_DRAWCOMPLETE    0x5002
  149. #define Q3VNM_SETVIEW        0x5003
  150. #define Q3VNM_SETVIEWNUMBER    0x5004
  151. #define Q3VNM_BUTTONSET        0x5005
  152. #define Q3VNM_BADGEHIT        0x5006
  153.  
  154. /******************************************************************************
  155.  **                                                                             **
  156.  **                            Win32 Window Class Name                           **
  157.  **        Can be passed as a parameter to CreateWindow or CreateWindowEx       **
  158.  **                                                                             **
  159.  *****************************************************************************/
  160. #define kQ3ViewerClassName "QD3DViewerWindow"
  161.  
  162. /******************************************************************************
  163.  **                                                                             **
  164.  **                            Win32 Clipboard type                              **
  165.  **                                                                             **
  166.  *****************************************************************************/
  167. #define kQ3ViewerClipboardFormat "QuickDraw 3D Metafile"
  168. /******************************************************************************
  169.  **                                                                             **
  170.  **        Return viewer version number                                         **
  171.  **                                                                             **
  172.  *****************************************************************************/
  173. EXTERN_API_C( TQ3Status )
  174. Q3WinViewerGetVersion            (unsigned long *        majorRevision,
  175.                                  unsigned long *        minorRevision);
  176.  
  177.  
  178. /******************************************************************************
  179.  **                                                                             **
  180.  **        Return viewer release version number                                 **
  181.  **        (in 'vers' format - e.g. 0x01518000 ==> 1.5.1 release)                 **
  182.  **                                                                             **
  183.  *****************************************************************************/
  184. EXTERN_API_C( TQ3Status )
  185. Q3WinViewerGetReleaseVersion    (unsigned long *        releaseRevision);
  186.  
  187.  
  188. /******************************************************************************
  189.  **                                                                             **
  190.  **                        Creation and destruction                             **
  191.  **                Note that this is not a QuickDraw 3D object                     **
  192.  **                                                                             **
  193.  *****************************************************************************/
  194. EXTERN_API_C( TQ3ViewerObject )
  195. Q3WinViewerNew                    (HWND                     window,
  196.                                  const RECT *            rect,
  197.                                  unsigned long             flags);
  198.  
  199. EXTERN_API_C( TQ3Status )
  200. Q3WinViewerDispose                (TQ3ViewerObject         viewer);
  201.  
  202.  
  203. /******************************************************************************
  204.  **                                                                             **
  205.  **                    Functions to attach data to a WinViewer                     **
  206.  **                                                                             **
  207.  *****************************************************************************/
  208. EXTERN_API_C( TQ3Status )
  209. Q3WinViewerUseFile                (TQ3ViewerObject         viewer,
  210.                                  HANDLE                 fileHandle);
  211.  
  212. EXTERN_API_C( TQ3Status )
  213. Q3WinViewerUseData                (TQ3ViewerObject         viewer,
  214.                                  void *                    data,
  215.                                  unsigned long             size);
  216.  
  217.  
  218. /******************************************************************************
  219.  **                                                                             **
  220.  **                Functions to write data out from the WinViewer                 **
  221.  **                                                                             **
  222.  *****************************************************************************/
  223. EXTERN_API_C( TQ3Status )
  224. Q3WinViewerWriteFile            (TQ3ViewerObject         viewer,
  225.                                  HANDLE                 fileHandle);
  226.  
  227. EXTERN_API_C( TQ3Status )
  228. Q3WinViewerWriteData            (TQ3ViewerObject         viewer,
  229.                                  void *                    data,
  230.                                  unsigned long             dataSize,
  231.                                  unsigned long *        actualDataSize);
  232.  
  233.  
  234. /******************************************************************************
  235.  **                                                                             **
  236.  **        Use this function to force the WinViewer to re-draw                     **
  237.  **                                                                             **
  238.  *****************************************************************************/
  239. EXTERN_API_C( TQ3Status )
  240. Q3WinViewerDraw                    (TQ3ViewerObject         viewer);
  241.  
  242. EXTERN_API_C( TQ3Status )
  243. Q3WinViewerDrawContent            (TQ3ViewerObject         viewer);
  244.  
  245. EXTERN_API_C( TQ3Status )
  246. Q3WinViewerDrawControlStrip        (TQ3ViewerObject         viewer);
  247.  
  248.  
  249. /******************************************************************************
  250.  **                                                                             **
  251.  **        Function used by the WinViewer to filter and handle events             **
  252.  **                                                                             **
  253.  *****************************************************************************/
  254. EXTERN_API_C( BOOL )
  255. Q3WinViewerMouseDown            (TQ3ViewerObject         viewer,
  256.                                  long                     x,
  257.                                  long                     y);
  258.  
  259. EXTERN_API_C( BOOL )
  260. Q3WinViewerContinueTracking        (TQ3ViewerObject         viewer,
  261.                                  long                     x,
  262.                                  long                     y);
  263.  
  264. EXTERN_API_C( BOOL )
  265. Q3WinViewerMouseUp                (TQ3ViewerObject         viewer,
  266.                                  long                     x,
  267.                                  long                     y);
  268.  
  269.  
  270. /******************************************************************************
  271.  **                                                                             **
  272.  **        This function returns a Bitmap of the contents of the                  **
  273.  **        WinViewer's window.  The application should dispose the Bitmap.         **
  274.  **                                                                             **
  275.  *****************************************************************************/
  276. EXTERN_API_C( HBITMAP )
  277. Q3WinViewerGetBitmap            (TQ3ViewerObject         viewer);
  278.  
  279.  
  280. /******************************************************************************
  281.  **                                                                             **
  282.  **                    Calls for dealing with Buttons                             **
  283.  **                                                                             **
  284.  *****************************************************************************/
  285. EXTERN_API_C( TQ3Status )
  286. Q3WinViewerGetButtonRect        (TQ3ViewerObject         viewer,
  287.                                  unsigned long             button,
  288.                                  RECT *                    rectangle);
  289.  
  290. EXTERN_API_C( unsigned long )
  291. Q3WinViewerGetCurrentButton        (TQ3ViewerObject         viewer);
  292.  
  293. EXTERN_API_C( TQ3Status )
  294. Q3WinViewerSetCurrentButton        (TQ3ViewerObject         viewer,
  295.                                  unsigned long             button);
  296.  
  297.  
  298. /******************************************************************************
  299.  **                                                                             **
  300.  **        Functions to set/get the group to be displayed by the WinViewer.     **
  301.  **                                                                             **
  302.  *****************************************************************************/
  303. EXTERN_API_C( TQ3Status )
  304. Q3WinViewerUseGroup                (TQ3ViewerObject         viewer,
  305.                                  TQ3GroupObject         group);
  306.  
  307. EXTERN_API_C( TQ3GroupObject )
  308. Q3WinViewerGetGroup                (TQ3ViewerObject         viewer);
  309.  
  310.  
  311. /******************************************************************************
  312.  **                                                                             **
  313.  **        Functions to set/get the color used to clear the window                 **
  314.  **                                                                             **
  315.  *****************************************************************************/
  316. EXTERN_API_C( TQ3Status )
  317. Q3WinViewerSetBackgroundColor    (TQ3ViewerObject         viewer,
  318.                                  TQ3ColorARGB *            color);
  319.  
  320. EXTERN_API_C( TQ3Status )
  321. Q3WinViewerGetBackgroundColor    (TQ3ViewerObject         viewer,
  322.                                  TQ3ColorARGB *            color);
  323.  
  324.  
  325. /******************************************************************************
  326.  **                                                                             **
  327.  **        Getting/Setting a WinViewer's View object.                             **
  328.  **                                                                             **
  329.  *****************************************************************************/
  330. EXTERN_API_C( TQ3ViewObject )
  331. Q3WinViewerGetView                (TQ3ViewerObject         viewer);
  332.  
  333. EXTERN_API_C( TQ3Status )
  334. Q3WinViewerRestoreView            (TQ3ViewerObject         viewer);
  335.  
  336.  
  337. /******************************************************************************
  338.  **                                                                             **
  339.  **        Calls for setting/getting WinViewer flags                             **
  340.  **                                                                             **
  341.  *****************************************************************************/
  342. EXTERN_API_C( TQ3Status )
  343. Q3WinViewerSetFlags                (TQ3ViewerObject         viewer,
  344.                                  unsigned long             flags);
  345.  
  346. EXTERN_API_C( unsigned long )
  347. Q3WinViewerGetFlags                (TQ3ViewerObject         viewer);
  348.  
  349.  
  350. /******************************************************************************
  351.  **                                                                             **
  352.  **        Calls related to bounds/dimensions.  Bounds is the size of              **
  353.  **        the window.  Dimensions can either be the Rect from the ViewHints     **
  354.  **        or the current dimensions of the window (if you do a Set).             **
  355.  **                                                                             **
  356.  *****************************************************************************/
  357. EXTERN_API_C( TQ3Status )
  358. Q3WinViewerSetBounds            (TQ3ViewerObject         viewer,
  359.                                  RECT *                    bounds);
  360.  
  361. EXTERN_API_C( TQ3Status )
  362. Q3WinViewerGetBounds            (TQ3ViewerObject         viewer,
  363.                                  RECT *                    bounds);
  364.  
  365. EXTERN_API_C( TQ3Status )
  366. Q3WinViewerSetDimension            (TQ3ViewerObject         viewer,
  367.                                  unsigned long             width,
  368.                                  unsigned long             height);
  369.  
  370. EXTERN_API_C( TQ3Status )
  371. Q3WinViewerGetDimension            (TQ3ViewerObject         viewer,
  372.                                  unsigned long *        width,
  373.                                  unsigned long *        height);
  374.  
  375. EXTERN_API_C( TQ3Status )
  376. Q3WinViewerGetMinimumDimension    (TQ3ViewerObject         viewer,
  377.                                  unsigned long *        width,
  378.                                  unsigned long *        height);
  379.  
  380.  
  381. /******************************************************************************
  382.  **                                                                             **
  383.  **                            Window related calls                             **
  384.  **                                                                             **
  385.  *****************************************************************************/
  386. EXTERN_API_C( TQ3Status )
  387. Q3WinViewerSetWindow            (TQ3ViewerObject         viewer,
  388.                                  HWND                     window);
  389.  
  390. EXTERN_API_C( HWND )
  391. Q3WinViewerGetWindow            (TQ3ViewerObject         viewer);
  392.  
  393. EXTERN_API_C( TQ3ViewerObject )
  394. Q3WinViewerGetViewer            (HWND                     theWindow);
  395.  
  396. EXTERN_API_C( HWND )
  397. Q3WinViewerGetControlStrip        (TQ3ViewerObject         viewer);
  398.  
  399.  
  400. /******************************************************************************
  401.  **                                                                             **
  402.  **        Adjust Cursor provided for compatibility with Mac Viewer             **
  403.  **                                                                             **
  404.  *****************************************************************************/
  405. EXTERN_API_C( TQ3Boolean )
  406. Q3WinViewerAdjustCursor            (TQ3ViewerObject         viewer,
  407.                                  long                     x,
  408.                                  long                     y);
  409.  
  410. EXTERN_API_C( TQ3Status )
  411. Q3WinViewerCursorChanged        (TQ3ViewerObject         viewer);
  412.  
  413.  
  414. /******************************************************************************
  415.  **                                                                             **
  416.  **        Returns the state of the WinViewer.  See the constant defined at the **
  417.  **        top of this file.                                                     **
  418.  **                                                                             **
  419.  *****************************************************************************/
  420. EXTERN_API_C( unsigned long )
  421. Q3WinViewerGetState                (TQ3ViewerObject         viewer);
  422.  
  423.  
  424. /******************************************************************************
  425.  **                                                                             **
  426.  **                            Clipboard utilities                                 **
  427.  **                                                                             **
  428.  *****************************************************************************/
  429. EXTERN_API_C( TQ3Status )
  430. Q3WinViewerClear                (TQ3ViewerObject         viewer);
  431.  
  432. EXTERN_API_C( TQ3Status )
  433. Q3WinViewerCut                    (TQ3ViewerObject         viewer);
  434.  
  435. EXTERN_API_C( TQ3Status )
  436. Q3WinViewerCopy                    (TQ3ViewerObject         viewer);
  437.  
  438. EXTERN_API_C( TQ3Status )
  439. Q3WinViewerPaste                (TQ3ViewerObject         viewer);
  440.  
  441.  
  442. /******************************************************************************
  443.  **                                                                             **
  444.  **                                Undo                                          **
  445.  **                                                                             **
  446.  *****************************************************************************/
  447. EXTERN_API_C( TQ3Status )
  448. Q3WinViewerUndo                    (TQ3ViewerObject         viewer);
  449.  
  450. EXTERN_API_C( TQ3Boolean )
  451. Q3WinViewerGetUndoString        (TQ3ViewerObject         viewer,
  452.                                  char *                    theString,
  453.                                  unsigned long             stringSize,
  454.                                  unsigned long *        actualSize);
  455.  
  456.  
  457. /******************************************************************************
  458.  **                                                                             **
  459.  **                            New Camera Stuff                                 **
  460.  **                                                                             **
  461.  *****************************************************************************/
  462. EXTERN_API_C( TQ3Status )
  463. Q3WinViewerGetCameraCount        (TQ3ViewerObject         viewer,
  464.                                  unsigned long *        count);
  465.  
  466. EXTERN_API_C( TQ3Status )
  467. Q3WinViewerSetCameraNumber        (TQ3ViewerObject         viewer,
  468.                                  unsigned long             cameraNo);
  469.  
  470. EXTERN_API_C( TQ3Status )
  471. Q3WinViewerSetCameraView        (TQ3ViewerObject         viewer,
  472.                                  TQ3ViewerCameraView     viewType);
  473.  
  474. #endif  /* TARGET_OS_WIN32 */
  475.  
  476.  
  477.  
  478. #if PRAGMA_ENUM_ALWAYSINT
  479.     #pragma enumsalwaysint reset
  480. #elif PRAGMA_ENUM_OPTIONS
  481.     #pragma option enum=reset
  482. #elif defined(PRAGMA_ENUM_PACK__QD3DWINVIEWER__)
  483.     #pragma options(pack_enums)
  484. #endif
  485.  
  486. #if PRAGMA_STRUCT_ALIGN
  487.     #pragma options align=reset
  488. #elif PRAGMA_STRUCT_PACKPUSH
  489.     #pragma pack(pop)
  490. #elif PRAGMA_STRUCT_PACK
  491.     #pragma pack()
  492. #endif
  493.  
  494. #ifdef PRAGMA_IMPORT_OFF
  495. #pragma import off
  496. #elif PRAGMA_IMPORT
  497. #pragma import reset
  498. #endif
  499.  
  500. #ifdef __cplusplus
  501. }
  502. #endif
  503.  
  504. #endif /* __QD3DWINVIEWER__ */
  505.  
  506.